home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Suzy B Software 2
/
Suzy B Software CD-ROM 2 (1994).iso
/
new_file
/
extras
/
apple_st
/
apple.les
< prev
next >
Wrap
Text File
|
1988-03-25
|
7KB
|
137 lines
Übertragung von Apple II - Textdateien zum Atari über V24-Schnittstelle:
Apple und Atari müssen über die serielle Schnittstelle verbunden sein!
Auf dem Apple mu₧ ein Treiber-Programm gestartet werden, da₧ z.B. so
aussehen könnte (unter APPLESOFT-BASIC):
Nr. Zeileninhalt Kommentar
10 ONERR GOTO 500 Fehlerbehandlung, s.u.
20 D$=CHR$(4) Steuerzeichen für DOS-Operationen
30 HOME
40 PRINT "TEXT-DATEIEN ZUM ATARI
UEBERTRAGEN:"
50 PRINT "('C1'=CATALOG,D1 ; Ansteuern beider Laufwerke, und
'C2'=CATALOG,D2)" Möglichkeit zum Wechseln
60 PRINT
70 INPUT "NAME = ?";F$ Filenamen eingeben (Typ "T" !)
80 IF LEN(F$) < 1 THEN 490 Abbruch, wenn nur <CR> gedrückt
90 IF F$ <> "C1" AND F$ <> "C2" kein "Catalog", kein Leerstring,
THEN 130 also Start
100 PRINT D$;"CATALOG" + Disk-Inhaltsverzeichnis zeigen
RIGHT$(F$,2)
110 PRINT
120 GOTO 40 Neuer Eingabe-Versuch
130 PRINT D$;"APPEND ";F$ Dient zum Test, ob File existiert;
140 PRINT D$;"CLOSE ";F$ "open" würde ihn sonst kreieren.
150 PRINT D$;"OPEN ";F$ Falls File existiert: Start
160 PRINT D$;"READ ";F$
170 E%=1 Immer Variablen statt Zahlen !
180 S%=8191 Die Bytes werden ab HGR1 abgelegt;
190 N%=0 max. bis $9600 (vor DOS),= 31kByte
200 N%=N%+E% Schleife mit Zählererhöhung
210 GET B$ Byte einlesen
220 POKE S%+N%, ASC(B$) zwischenspeichern
225 A=FRE(0) **** s.u. ****
230 GOTO 200 weiterlesen; Stop über Error-Routine
240 PRINT D$;"CLOSE" Einlesen fertig
250 A=INT( N% / 256 ) High-Byte der Byteanzahl (8 Bit!)
260 B=N% - 256*A Low-Byte
270 PRINT N%;" BYTES WERDEN Länge bekanntgeben
UEBERTRAGEN"
280 PRINT
290 PRINT "UEBERTRAGUNG ABBRECHEN Text für Kontrolle (s. Prozedur)
(J/N) " sowie s.Zeilen 320-350
300 PRINT D$;"PR#2" Slot der seriellen Schnittstelle
310 PRINT CHR$(A), CHR$(B) Länge im 2-Byte-Format übertragen
320 L=PEEK(-16384) Speicherzelle der Tastatureingabe
330 IF L>127 THEN 360 Taste wurde gedrückt
340 T=PEEK(-16336) falls nicht: Akustisches Signal geben
350 GOTO 320 und weiter auf Antwort warten
360 POKE -16368,0 Tastatureingabe wieder freigeben
370 IF L=202 THEN 420 "J" wurde eingegeben => Abbruch
380 FOR I=1 TO N% Falls nicht: Übertragung
390 PRINT CHR$( PEEK( S% + I )); Chr$() zum Byte-weisen Übertragen
400 NEXT I
410 PRINT mu₧ sein; letztes Zeichen somit <CR>
420 PRINT D$;"PR#0" zurück zum Terminal
430 PRINT
440 INPUT "NOCH EIN FILE Das Ganze natürlich beliebig oft
UEBERTRAGEN (J/N) ? ";A$
450 IF LEFT$(A$,1) <> "J" THEN 490 Übertragung abgeschlossen
460 ONERR GOTO 500 Reaktivieren der Error-Routine (wurde
470 HOME durch File-Ende deaktiviert)
480 GOTO 40 Und nochmal von vorne
490 END
500 E=PEEK(222) Inhalt der Fehlermeldung
510 POKE 216,0 Fehler-Zeiger zurücksetzen
520 PRINT
530 IF E=6 THEN 570 kam aus Zeile 130, File nicht existent
540 IF E=5 THEN 240 kam aus Zeile 210, also EOF erreicht
550 PRINT "FEHLER ";E alle anderen Fehler
560 GOTO 490
570 PRINT "GIBT'S NICHT!" Falscher Dateiname eingegeben
580 ONERR GOTO 500 Reaktivieren, s.o.
590 GOTO 40 und nächsten Versuch starten
Compilieren, z.B. mit dem TASC-Compiler bringt eine ganze Menge, vor
allem läuft das Laufwerk des Apple dann durch, statt nach jedem Sektor
kurz zu stoppen, au₧er... :
**** Der Befehl A=FRE(0) bedingt, da₧ in der Variablenverwaltung auf-
geräumt wird: Die Stringvariable B$ aus Zeile 210 wird unter Applesoft
nämlich nicht überschrieben, sondern jedesmal neu eingerichtet. Das
führt zu einem Überlauf, wenn B$ zu oft auftaucht, wodurch die Über-
tragung total durcheinandergerät.
Andererseits dauert gerade dieser Befehl Fre(0) recht lange, so da₧
auch bei einem compilierten Programm (s.o.) das Laufwerk nach jedem
Sektor kurz anhält.
Besteht also der Textfile aus nur wenigen Sektoren (z.B. 10), kann
die Zeile 225 entfernt werden; das würde den Einlesevorgang auf dem
Apple wesentlich beschleunigen.
Man sollte sich vielleicht 2 Programme auf dem Apple erzeugen und dann
compilieren, eines mit, und eines ohne Zeile 225.
Atari-seitig wird entweder unter GfA-Basic das Programm APPLE.BAS
gestartet, oder gleich das bereits compilierte Programm APPLE.PRG,
welches natürlich alles etwas beschleunigt.
Die "procedure" ist dann wie folgt:
- Auf beiden Rechnern die Programme starten
- Atari-Programm bis zur Abfrage "V24-Schnittstelle fertig zum
Übertragen?" laufen lassen (einschlie₧lich dem "O.K."-Klick!).
- Apple Programm bis einschlie₧lich der File-Abfrage durchlaufen
lassen
- Nachdem der Apple die Anzahl der Bytes angegeben hat, hält er (in einer
Endlosschleife, Zeilen 320-350) an.
An dieser Stelle wurden die zwei Bytes übertragen, die die Länge der
zu übertragenden Bytes enthalten. Diese Anzahl wird auch auf dem
Atari angezeigt, und es erscheint eine Alert-Box, in der diese Länge
bestätigt werden soll.
* Falls beide Längen nicht übereinstimmen, wird durch Anklicken der
"nein"-Box das Programm auf dem Atari gestoppt. Auf dem Apple mu₧
dann noch ein "J" eingegeben werden, und auch dieses Programm wird
gestoppt.
* Falls beide Längen doch übereinstimmen (dies sollte der Normalfall
sein!), zunächst auf dem Atari die "ja"-Box anklicken, dann auf dem
Apple irgendeine Taste (au₧er "J"!!) drücken, z.B. die Space-Taste.
- Apple ist dann zunächst fertig. Falls kein anderer Textfile übertragen
werden soll, <CR> drücken und ausschalten.
- Datenfile auf dem Atari wie gewünscht weiterbearbeiten, drucken
und/oder speichern.
- Neue Übertragung sinngemä₧.
(Die Kontrolle der Anzahl der zu übertragenden Bytes ist insofern sinn-
voll, da auf der V24-Schnittstelle (auf der Apple-Karte oder auch im
Atari-Buffer) noch alte Daten stehen können; der Atari erwartet dann
eine falsche Anzahl von Bytes und "hängt sich auf", wie man so schön
sagt.)
Viel Spa₧ damit, bei mir lief die Übertragung gut!
Rolf Henke, Blumenthalstr. 12, 2800 Bremen 1, d.25.01.1988
(Das ist die Adresse, an die die vielen Geldscheine geschickt werden
sollen!!!)